Curvatureをgeometry nodesで取得する
https://gyazo.com/10ed7ef4ec7063d8d9f4f789e89210c8
https://gyazo.com/43da00f6257aed819fa899465cd1a4ff
こんな感じに組む
最終的にFieldを評価するAttribute DomainはPointであることに注意
最後にBlur Attribute Nodeも使ってあげるとShaderとかに渡してもいい感じに馴染むかも
解説
後者はNormalizeされていない
そのVertexが属している全てのFace CornerのVectorの平均値を出力している
出力のX成分は入力した2つのベクトルのX成分の平均で、YにもZにも同じ感じに出力している
以下の図はこんな感じのメッシュを想像してください
https://gyazo.com/53441a1853a5b657107d8ccd0f8f6d5b
https://gyazo.com/5f5bb0417998664f64dcc70c0c3e3417https://gyazo.com/ae9dc4942973454f845be7c9adfe8e9d
https://gyazo.com/8ac9c202b8c31c8654a65d8895378bb3
こんな感じに短くなっている
長さは左が1、右が0.707
同じ方向を指しているけどその2つのVectorの長さが違う
以下はさらにTo Degreesに突っ込んでわかりやすくしたもの
https://gyazo.com/05ed08f288ac3c456f8782b9af9ec8b8https://gyazo.com/6e23f18b79bd941f2d26507adbcbadf3
45°が出てますね
Vertexのなす角度を出しているわけではないので90°ではありません
https://gyazo.com/877262ff162e944f72f7ce35807bef67
こんな感じに出ています
どうして2つのVectorを足して2で割ってできたVectorの長さをArccosineに突っ込んだらが↑のように45°が出るのか?
証明
長さが1の$ \vec{A}と$ \vec{B}を足して2で割ってできた$ \overrightarrow{AB}が垂直方向に伸びている状態のとき、
https://gyazo.com/183e8319d9b89cd4759a7a53bf5a0f81
こんなことしなくても直感的に$ |\overrightarrow{AB}|が$ |\vec{A}|cos\thetaなのがわかればそれでいいですyozba.icon
$ \theta = arccos|\overrightarrow{AB}|というのは、ちょうど一番上のノードの組み方と同じ
https://gyazo.com/43da00f6257aed819fa899465cd1a4ff
Evaluate on DomainでとったVectorの長さを求めてArccosineにぶっこむ
わかりやすいように2つのVectorで証明したけど3つのVectorでも同じことが当てはまる